package utils

type GlobalError struct {
	Code         int    `json:"code"`
	Message      string `json:"message"`
	RealErrorMsg string `json:"realErrorMsg"`
}

func (g *GlobalError) Error() string {
	return g.RealErrorMsg
}

const (
	ServerError    = 10101 // Internal Server Error
	ParamBindError = 10102 // 参数信息有误
	GetError       = 20101
	CreateError    = 20102
	DeleteError    = 20103
	UpdateError    = 20104

	LoginErr  = 30101
	LogoutErr = 30102
)

var codeTag = map[int]string{
	ServerError:    "Internal Server Error",
	ParamBindError: "参数绑定错误",
	GetError:       "查询失败",
	CreateError:    "创建失败",
	DeleteError:    "删除失败",
	UpdateError:    "更新失败",
	LoginErr:       "登录失败",
	LogoutErr:      "注销失败",
}

func GetErrorMsg(code int) string {
	return codeTag[code]
}

// NewGlobalError 实例化一个globalError
func NewGlobalError(code int, err error) error {
	return &GlobalError{
		Code:         code,
		Message:      codeTag[code],
		RealErrorMsg: err.Error(),
	}
}
